let connections = [];
let socket = null;

// 启动 WebSocket 连接
function startWebSocket() {
    socket = new WebSocket('wss://your-server-websocket-url');

    socket.onopen = () => {
        console.log("WebSocket connection established");
    };

    socket.onmessage = (event) => {
        // 当接收到服务器消息时，将其分发给所有连接的页面
        const message = JSON.parse(event.data);

        // 根据服务器发送的消息来处理，假设消息中包含分配给某个标签页的任务
        connections.forEach((conn) => {
            if (conn.name === message.targetTab) {
                conn.port.postMessage(message); // 向目标标签页发送消息
            }
        });
    };

    socket.onclose = () => {
        console.log("WebSocket connection closed");
        // 可根据需求实现重连机制
    };

    socket.onerror = (error) => {
        console.error("WebSocket error: ", error);
    };
}

// 创建 SharedWorker 入口
onconnect = function(event) {
    const port = event.ports[0];
    connections.push({ port, name: null });

    // 初始化 WebSocket 连接
    if (!socket) {
        startWebSocket();
    }

    // 收到标签页的消息时（比如标签页通知它的名字或发起请求）
    port.onmessage = function(e) {
        const data = e.data;

        if (data.type === "register") {
            // 标签页注册一个名字，用来之后分配任务
            const connection = connections.find(c => c.port === port);
            connection.name = data.name;
        } else if (data.type === "sendMessage") {
            // 通过 WebSocket 向服务器发送消息
            socket.send(JSON.stringify(data.message));
        }
    };

    // 当标签页关闭时，移除连接
    port.onclose = function() {
        connections = connections.filter(c => c.port !== port);
    };
};
